tg-me.com/php_interview_lib/828
Last Update:
Как вы используете трансляцию(broadcasting) в Laravel?
Laravel обеспечивает трансляцию событий в реальном времени с помощью каналов и слушателей. Вот как использовать трансляцию в Laravel:
Шаг 1: Создайте событие
Создайте событие, которое должно транслироваться. Вы можете создать событие, выполнив следующую команду в терминале:
php artisan make:event OrderShipped
Эта команда создаст новое событие класса OrderShipped.
Шаг 2: Зарегистрируйте событие в EventServiceProvider
Добавьте событие OrderShipped в свойство $listen в EventServiceProvider. Это позволит транслировать событие на указанный канал(ы).
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification'
],
];
Шаг 3: Создайте канал
Создайте канал, который будет транслировать событие желаемым слушателям. Вы можете создать канал, выполнив следующую команду:
php artisan make:channel OrderChannel
Эта команда создаст новый канал класса OrderChannel.
Шаг 4: Трансляция события
Транслируйте событие OrderShipped на нужный канал (каналы) с помощью метода broadcast.
use App\Events\OrderShipped;
broadcast(new OrderShipped($order))->toOthers();
Это позволит транслировать событие OrderShipped всем другим подключенным клиентам на указанном канале.
Прослушивание транслируемых событий
Чтобы прослушивать транслируемые события, необходимо создать слушателя, который будет получать транслируемое событие. Вот как создать слушателя:
Шаг 1: Создание слушателя
Создайте слушатель, который будет обрабатывать транслируемое событие. Вы можете создать слушателя, выполнив следующую команду:
php artisan make:listener SendShipmentNotification
Эта команда создаст новый класс слушателя SendShipmentNotification.
Шаг 2: Реализация метода Handle
Реализуйте метод handle, чтобы определить, что должно быть сделано при передаче события.
public function handle(OrderShipped $event)
{
// Отправляем уведомление об отгрузке покупателю
}
Шаг 3: Регистрация слушателя
Зарегистрируйте слушатель SendShipmentNotification в свойстве $listen в EventServiceProvider.
protected $listen = [
'App\Events\OrderShipped' => [
'App\Listeners\SendShipmentNotification'
],
];
Трансляция с помощью Socket.IO
Laravel предоставляет драйвер вещания Socket.IO из коробки. Чтобы использовать этот драйвер, необходимо установить пакеты socket.io-client и laravel-echo.
npm install --save socket.io-client laravel-echo
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
import Echo from 'laravel-echo'
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
});
Теперь вы можете использовать объект Echo для прослушивания транслируемых событий.
window.Echo.channel('orders')
.listen('.order.shipped', function(data) {
console.log('Заказ отправлен', data);
});
Это позволит прослушать событие order.shipped на канале orders и вывести данные в консоль при получении события.
После установки пакетов необходимо создать новый экземпляр объекта Echo и сконфигурировать его с деталями трансляции в файле resources/js/bootstrap.js.
BY Библиотека собеса по PHP | вопросы с собеседований
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/php_interview_lib/828